
import groovy.json.*
import org.apache.commons.lang.StringUtils
import redis.clients.jedis.*
import com.alibaba.moco.util.*
import com.alibaba.moco.*
import java.util.Random
import java.math.BigDecimal
import static java.util.UUID.randomUUID

/**
 * 模拟 滴滴 預估價格接口
 * Created by wb-lj240895 on 2016/11/1.
 */
def excute(request){
    def params = request.getParameterMap();
    PriceCouponRequest req = BaseTypeUtil.mapToBean(params, PriceCouponRequest.class) as PriceCouponRequest
    //TODO:字段正確性判斷
    Jedis redis = RedisPoolInstance.getRedisClient()
    //欢行异常判断
    def e = redis.hget("exception","estimate")
    if (!StringUtils.isBlank(e)) {
        def slurper = new JsonSlurper()
        def eJson = slurper.parseText(e)
        return eJson
    }
    String token = req.getAccess_token()
    System.out.println(token)
    if(token!= null/* && redis.exists(token)*/){
        //redis.del(token)
        //TODO:更新订单字段信息
        String md5 = (randomUUID() as String).replace("-","").toLowerCase()
        PriceCouponResponse response = new PriceCouponResponse()
        response.setErrno(0)
        response.setErrmsg("SUCCESS")
        PriceCouponData couponData = new PriceCouponData()
        Map<String,PriceCouponData> data = new HashMap<String,PriceCouponData>()
        couponData.setDynamic_md5(md5)
        couponData.setCode(req.getRequire_level())
        couponData.setDynamic_price(Double.valueOf(BaseTypeUtil.randomDoubleNum(200)))
        couponData.setPrice(Double.valueOf(BaseTypeUtil.randomDoubleNum(200)))
        couponData.setPrice_tip("需求过旺临时调价{1.3倍}")
        couponData.setName("快車型")
        couponData.setStart_price(0)
        couponData.setNormal_unit_price(1.5)
        data.put(req.getRequire_level(),couponData)
        response.setData(data)
        //保存预估价信息
        redis.hset("DIDI.COUPON", md5 , JsonOutput.toJson(couponData).toString())
        redis.expire("DIDI.COUPON", 6400)

        return JsonOutput.toJson(response)
    }else {
        PriceCouponResponse response = new PriceCouponResponse();
        response.setErrno(-1)
        response.setErrmsg("token err estimate")
        return JsonOutput.toJson(response)
    }
}
public class PriceCouponRequest {
    String client_id   //	string	yes	申请应用时分配的APP_KEY
    String access_token    //	string	yes	乘客认证信息
    String timestamp   //	int	yes	时间戳
    double flat    //	float	yes	出发地纬度
    double flng    //	float	yes	出发地经度
    double tlat    //	float	yes	目的地纬度
    double tlng    //	float	yes	目的地经度
    String map_type    //	enum	no	地图类型，暂只支持soso
    String require_level   //	string	yes	车型代码（专车如：100、200等；快车如：600等）
    int rule    //	int	yes	计价模型分类，201(专车)；301(快车)
    int city    //	int	yes	出发城市id（城市车型接口返回）
    int type    //	int	yes	0:实时单 1:预约单
    String departure_time  //	dateTime	no	预约单必须传（格式例如：2015-06-16 12:00:09）
    String sign    //	string	yes	签名
}
public class PriceCouponResponse {
    int errno
    String errmsg
    Map<String,PriceCouponData> data
}
public class PriceCouponData{
    String name	//": "快车型",
    String code	//": "600",
    double price	//": 134.2,
    double dynamic_price	//": 91,
    String dynamic_md5	//": "1c94d686828bb8cdd22207f51f515741",
    String price_tip	//": "需求过旺临时调价{3.1倍}",
    double start_price	//": 0,
    double normal_unit_price	//": 1.5
}